package edu.hubu.supermarketmanagementsystem.mapper;

import edu.hubu.supermarketmanagementsystem.entity.Admin;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface AdminMapper {

    /**
     * 根据用户名查询用户信息。
     * @param username 用户名。
     * @return 如果用户名存在，则返回查询到用户信息，并将其封装到Admin实体类对象中。
     */
    Admin selectByUsername(String username);

    /**
     * 注册用户。
     * @param admin 用于注册的对象。
     * @return 如果注册成功，则返回<code>1</code>，否则返回<code>0</code>。
     */
    int register(Admin admin);

    /**
     * 用户登录。
     * @param username 用于登录的用户名。
     * @param password 用于登录的密码。
     * @return 登录成功则返回相应的实体。
     */
    Admin login(@Param("username") String username, @Param("password") String password);

    /**
     * 获取用户名单。
     * @return 用户表中的用户基本信息名单。
     */
    Admin[] getUserList();

    /**
     * 更新用户基本信息。
     * @param admin 封装了新的用户基本信息的实体。
     * @return 如果更新成功，则返回<code>1</code>，否则返回<code>0</code>。
     */
    int updateUser(Admin admin);

    /**
     * 更新用户密码。
     * @param id 待更新密码的用户ID。
     * @param password 用于登录的新密码。
     * @return 如果更新成功，则返回<code>1</code>，否则返回<code>0</code>。
     */
    int updateUserPassword(@Param("id") Integer id, @Param("password") String password);

    /**
     * 删除用户。
     * @param id 待删除的用户ID。
     * @return 如果删除成功，则返回<code>1</code>，否则返回<code>0</code>。
     */
    int deleteUser(@Param("id") Integer id);

    /**
     * 根据ID查找用户。
     * @param id 待查找的用户ID。
     * @return 如果有符合条件的用户，则返回此用户，否则返回null。
     */
    Admin getUserById(@Param("id") Integer id);
}
